package com.pureut.storage.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.pureut.storage.domain.PickingComplete;
import com.pureut.storage.dto.*;
import com.pureut.storage.export.PickingCompleteExport;
import com.pureut.storage.vo.PickingCompleteVo;
import com.pureut.storage.vo.PickingRestDbVo;
import com.pureut.storage.vo.UpdateDocVo;
import com.sale.common.mybatis.core.page.PageQuery;
import com.sale.common.mybatis.core.page.TableDataInfo;

import java.util.List;


/**
 * @author: CM
 * @date: 2022/12/29    15:52
 */

public interface PickingCompleteService extends IService<PickingComplete> {

    /**
     *新增返工出库单
     * @param pickingComPleteVo
     * @return
     */
    boolean addPickingComplete(PickingCompleteVo pickingComPleteVo) throws Exception;

    /**
     * 关结返工出库单
     * @param pickingComPleteVo
     * @return
     */
    boolean closeComplete(PickingCompleteVo pickingComPleteVo);

    /**
     * 修改反攻出库单
     * @param pickingComPleteVo
     * @return
     */
    int updateComplete(PickingCompleteVo pickingComPleteVo);

    /**
     * 删除反攻出库单
     * @param ids
     * @return
     */
    boolean deleteOutComplete(String ids);

    /**
     * 查看
     * @param id
     * @return
     */
    PickingCompleteDto view(Long id);

    /**
     * 列表查询
     * @param pickingComPleteVo
     * @return
     */
    TableDataInfo<PickingCompleteInfoDto> getList(PickingCompleteVo pickingComPleteVo, PageQuery pageQuery) throws Exception;

    /**
     * 列表查询
     * @param pickingComPleteVo
     * @return
     */
    List<GetPdaDto> getListPda(PickingCompleteVo pickingComPleteVo);

    /**
     * 导出
     * @param pickingComPleteVo
     * @return
     */
    List<PickingCompleteExport> getInfoExport(PickingCompleteVo pickingComPleteVo);

    /**
     * 出库Pda
     * @param pickingRestDbVo
     * @return
     */
    PickingRestDbDto out(PickingRestDbVo pickingRestDbVo) throws Exception;

    /**
     * 拣货完成
     * @param id
     * @return
     */
    boolean finishProduction(Long id) throws Exception;


    /**
     * 交接
     * @param pickingRestDbVo
     * @return
     */
    PickingRestHandoverDto overProduction(PickingRestDbVo pickingRestDbVo);

    /**
     * 品质检验单修改仓库单据状态
     * @param updateDocVo
     * @return
     */
    boolean competeUpdateStatus(UpdateDocVo updateDocVo);

    /**
     * 拣货方案
     * @param id
     * @return
     */
    SchemeDto point(Long id);
}
